// components/emotion-card/index.js
// 情感卡片组件逻辑

const { TimeUtils } = require('../../utils/index')

/**
 * 情感卡片组件
 */
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 情感数据
    emotion: {
      type: Object,
      value: {},
      observer: 'onEmotionChange'
    },
    
    // 胶囊数据
    capsule: {
      type: Object,
      value: {}
    },
    
    // 显示模式
    mode: {
      type: String,
      value: 'default' // 'default' | 'compact' | 'detail'
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    // 组件内部数据
    formattedTime: '',
    emotionColor: '',
    showActions: false
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
     * 情感数据变化监听
     */
    onEmotionChange(newVal) {
      if (newVal && newVal.timestamp) {
        this.setData({
          formattedTime: TimeUtils.formatTime(newVal.timestamp)
        })
      }
      
      // 设置情感颜色
      this.setEmotionColor(newVal)
    },
    
    /**
     * 设置情感颜色
     */
    setEmotionColor(emotion) {
      if (!emotion) return
      
      let color = '#667eea'
      switch (emotion.type) {
        case 'happy':
          color = '#FFD700'
          break
        case 'sad':
          color = '#4169E1'
          break
        case 'angry':
          color = '#FF4500'
          break
        case 'excited':
          color = '#FF6347'
          break
        case 'calm':
          color = '#87CEEB'
          break
        default:
          color = '#667eea'
      }
      
      this.setData({
        emotionColor: color
      })
    },
    
    /**
     * 点击卡片事件
     */
    onTap() {
      this.triggerEvent('tap', {
        emotion: this.data.emotion,
        capsule: this.data.capsule
      })
    },
    
    /**
     * 点击更多操作
     */
    onMoreTap(e) {
      e.stopPropagation()
      this.setData({
        showActions: !this.data.showActions
      })
      
      this.triggerEvent('moretap', {
        emotion: this.data.emotion,
        showActions: !this.data.showActions
      })
    },
    
    /**
     * 分享情感
     */
    onShare() {
      this.setData({
        showActions: false
      })
      
      this.triggerEvent('share', {
        emotion: this.data.emotion
      })
    },
    
    /**
     * 删除情感
     */
    onDelete() {
      this.setData({
        showActions: false
      })
      
      this.triggerEvent('delete', {
        emotion: this.data.emotion
      })
    },
    
    /**
     * 编辑情感
     */
    onEdit() {
      this.setData({
        showActions: false
      })
      
      this.triggerEvent('edit', {
        emotion: this.data.emotion
      })
    }
  },

  /**
   * 组件生命周期
   */
  lifetimes: {
    /**
     * 组件实例刚刚被创建
     */
    created() {
      // 组件实例刚刚被创建好时，不能调用 setData
    },
    
    /**
     * 组件实例进入页面节点树
     */
    attached() {
      // 初始化组件
      this.generateParticles()
      if (this.data.emotion && Object.keys(this.data.emotion).length > 0) {
        this.updateColors(this.data.emotion)
      }
    },
    
    /**
     * 组件在视图层布局完成后执行
     */
    ready() {
      // 组件布局完成
    },
    
    /**
     * 组件实例被移动到节点树另一个位置
     */
    moved() {
      // 组件实例被移动到节点树另一个位置
    },
    
    /**
     * 组件实例被从页面节点树移除
     */
    detached() {
      // 清理资源
    }
  },

  /**
   * 组件所在页面的生命周期
   */
  pageLifetimes: {
    /**
     * 组件所在的页面被展示
     */
    show() {
      // 页面被展示
    },
    
    /**
     * 组件所在的页面被隐藏
     */
    hide() {
      // 页面被隐藏
    },
    
    /**
     * 组件所在的页面尺寸变化
     */
    resize(size) {
      // 页面尺寸变化
    }
  }
})